package org.xteam.sled.model;

import java.util.List;
import java.util.Set;

import org.xteam.sled.semantic.exp.Exp;
import org.xteam.sled.semantic.exp.ExpRewriter;

public interface IDisjunct {
	
	String name();
	
	void setName(String name);
	
	boolean hasConditions();
	
	Set<Exp> getConditions();
	
	void addConditions(List<Exp> constraints);
	
	boolean isContradictory();
	
	boolean isFieldBinding();
	
	IDisjunct and(IDisjunct other);
	
	IDisjunct seq(IDisjunct other);

	IDisjunct preDots();
	
	IDisjunct postDots();
	
	ISequence getSequence();

	IDisjunct subst(ExpRewriter subs);

	IDisjunct nameUnnamed(String newName);

}
